package mybatis.interfaces;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 使用 and 连接的 >= 操作
 *
 */
public interface IGreaterThanOrEqualsQueryCondition extends Serializable {

    /**
     * 大于等于，仅支持不同字段and连接，eg: gte[age]=20 表示 age >= 20
     * <p>
     * 备注：为了与SwaggerUI结合，产生Swagger文档
     *
     * @return null
     */
    @ApiModelProperty(name = "gte[?]", value = "大于等于，仅支持不同字段and连接，eg: gte[age]=20 表示 age >= 20 ")
    @JsonIgnore
    default String getGteSwaggerView() {
        return null;
    }

    /**
     * getGte
     *
     * @return
     */
    Map<String, String> getGte();

    /**
     * setGte
     *
     * @param gte
     */
    void setGte(Map<String, String> gte);

    /**
     * addGte
     *
     * @param field
     * @param value
     */
    default void addGte(String field, String value) {
        if (getGte() == null) {
            setGte(new HashMap<>(8));
        }
        getGte().put(field, value);
    }

    /**
     * setGte(null)
     */
    default void clearGte() {
        setGte(null);
    }

    /**
     * isEmptyGte
     *
     * @return  boolean
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    default boolean isEmptyGte() {
        return getGte() == null || getGte().isEmpty();
    }
}
